Teknik Doküman · Dijital Psikolog

Orchestrator Akış Şeması

Core
I/O · gateway
Durum · bellek
Altyapı
★ Servet — doldurulacak
Kriz — öncelik 0
K-0 · Telegram gateway
Danışanın sisteme girdiği tek kapı
Tüm kullanıcı girdilerini alır ve türüne göre işler. Sesli mesajlar Whisper STT'den geçer, metin olarak devam eder. Komutlar ayrı akışları tetikler.
Metin mesajıDirekt alınır. chat_id ile oturuma bağlanır, ön işlemeye gönderilir.
Sesli mesajTelegram .ogg indirilir → Whisper API → transkript metni. Uzun sessizlikler ve doldurma sesler temizlenir.
/startYeni danışan kaydı oluşturur. Onboarding başlatır. "AI asistanla görüşüyorsunuz, Servet izliyor" açıklaması gösterilir.
/durSeansı sonlandırır, K-10 seans sonu işleyiciyi tetikler. Danışana kapanış mesajı gönderilir.
Kütüphanepython-telegram-bot 20+ (async). Geliştirmede polling, üretimde webhook.
Çıktı şemasıchat_id · user_id · input_type · raw_text · timestamp → K-1'e iletilir.
Şimdi kodlanabilirpython-telegram-botopenai/whisper

K-1 · Seans durumu yükleyici
Her konuşma başlamadan tüm terapötik bağlam yüklenir
LLM hiçbir zaman bağlam olmadan çalışmaz. Bu katman chat_id ile veritabanına gider, danışana ait tüm terapötik hafızayı çeker ve session_state objesini oluşturur.
Vaka formülasyonuTemel şikayet, tekrarlayan örüntüler, savunma mekanizmaları, tetikleyiciler, hedefler. Her seans sonrası K-10 tarafından güncellenir.
Alliance skoruTerapötik ittifak 0.0–10.0. Düşükse metodoloji katmanına "teknik değil önce ilişki" talimatı gider.
Seans momentumuÖnceki seansın nerede bittiği, hangi konunun açık kaldığı, sıcaklık seviyesi 1–5. Bir sonraki seansın açılışını şekillendirir.
Ödev durumuSon verilen ödev, tamamlanıp tamamlanmadığı, danışanın yorumu. Seans başında kontrol edilir.
KaynakPostgreSQL + Redis cache. İlk seansta tüm alanlar boş/default. Seans numarası artar.
★ Servet metodolojisi — buraya eklenecek
Servet'in anamnez formu ve not tutma biçimi öğrenilince: hangi klinik kategorileri kullandığı, ilk seansta hangi bilgileri topladığı, vaka formülasyonunda nelere öncelik verdiği. Bu bilgiler session_state objesinin alanlarına birebir yansıtılacak.
İskelet şimdi yazılabilirServet ile doldurulacak

K-2 · Ön işleme
Ham metin terapötik işlemeye hazır hale getirilir
Telegram'dan gelen metin her zaman temiz değildir. Sesli transkriptte noktalama eksik olabilir, cümle bitmeden gönderilmiş olabilir, dil karışık olabilir.
Dil tespitiTürkçe / İngilizce / karışık. Yanıt dili buna göre belirlenir. langdetect veya basit heuristic yeterli.
Metin temizlemeWhisper transkriptinde gelen doldurma sesler (eem, uhh), tekrar eden kelimeler temizlenir. Noktalama normalleştirilir.
Konuşma sınırıKullanıcı 3 saniye arayla iki mesaj gönderdiyse birleştirilip birleştirilmeyeceğine karar verilir.
Uzunluk kontrolüÇok kısa (tek kelime "evet") → yansıtma yolu. Çok uzun (500+ kelime) → özetle sonra yanıtla.
Şimdi kodlanabilir

K-3 · Orchestrator — 7 paralel modül
Her mesajda 7 modül aynı anda çalışır
Orchestrator sıralı değil paralel çalışır. asyncio.gather ile 7 modül aynı anda başlatılır, sonuçları beklenir, K-4'e teslim edilir. Her modülün structured JSON çıktısı vardır. Kriz modülü (M-1) sonucu 0.7+ ise diğer modüller iptal edilir.
Paralel çalışmaasyncio.gather ile tüm modüller aynı anda başlar. Birinin yavaşlaması diğerlerini bekletmez.
TimeoutHer modül için 3 saniye. Aşılırsa o modülün default çıktısı kullanılır, seans engellenmez.
Kriz bypassM-1 risk 0.7+ ise diğer modüller iptal, K-4 ve K-5 atlanır, doğrudan kriz protokolüne gidilir.
M-1 · Kriz tarayıcı — öncelik 0, asla atlanmaz
Her mesajı bağımsız olarak tarar. Risk skoru 0.7+ ise tüm akış durur: LLM'e istek gitmez, danışana "182 ALO Psikiyatri" mesajı gönderilir, Servet admin kanalına anlık alarm düşer. 0.4–0.7 arasında akış devam eder ama metodoloji katmanına "kriz yakını" uyarısı eklenir.
Çalışma biçimiKüçük ve hızlı bir LLM çağrısı (claude-haiku). Yalnızca risk değerlendirmesi yapar, yanıt üretmez.
Risk türleriintihar · zarar verme · psikoz belirtisi · akut panik · yok. Her biri için farklı eşik değeri.
Çıktırisk_skoru · risk_turu · tetikleyen_ifade · akis_devam_eder
Blocker — ilk kodlanacakŞimdi yazılabilir
M-2 · Aşama dedektörü
Seans no, konuşma içeriği ve session_state'e bakarak seansın hangi aşamasında olduğunu belirler. Aşama metodoloji seçiciye ve teknik seçiciye doğrudan etki eder.
intakeİlk 2–3 seans. Hikaye toplama, güven kurma, hedef belirleme. Teknik uygulama yok.
aktifAsıl çalışma. Seçilen metodoloji uygulanır. Alt aşamalar: hedef çalışma · örüntü farkındalığı · beceri geliştirme.
konsolidasyonÖğrenilenleri pekiştirme. Ödevler yoğunlaşır. İlerleme değerlendirmesi yapılır.
sonlandırmaVedalaşma hazırlığı. Kazanımlar özetlenir. Bağımsızlık güçlendirilir.
Çıktıasama · alt_asama · asama_degisti_mi
★ Servet metodolojisi — alt aşama detayları
Servet kaç seansta intake'i tamamlar? Konsolidasyon aşamasında ne değişir? Servet'in klinik akışı öğrenilince alt_asama değerleri buna göre güncellenecek.
İskelet şimdi yazılabilirAlt detaylar Servet'i bekliyor
M-3 · Duygu analizi
LLM'e yanıt ürettirmeden önce danışanın duygusal durumunu ölçer. Ton kalibrasyonuna ve teknik seçimine beslenir.
Valanspozitif / negatif / nötr / karışık. Yanıt tonunu doğrudan etkiler.
Yoğunluk0–10. 8+ yoğunlukta metodoloji katmanı önce stabilizasyon tekniği seçer.
Baskın duyguüzüntü · kaygı · öfke · umut · utanç · boşluk · belirsizlik · ...
İfade biçimiDoğrudan mı ("çok üzgünüm") yoksa ima mı ("sanırım biraz yorgunum"). İma halinde yansıtma tekniği devreye girer.
Çıktıvalans · yogunluk · baskın_duygu · ikincil_duygu · ifade_edilen_mi
Şimdi kodlanabilirStructured output · claude-haiku
M-4 · Direnç dedektörü ★
Kaçınma örüntülerini tespit eder. Tespit edilince metodoloji katmanına "zorlamak yerine yan yola git" talimatı gönderilir.
Konu değiştirmeHassas bir konu açılınca başka şeyden bahsetmeye başlama. Abrupt topic shift sinyali.
YüzeyselleşmeÖnceki seanslarda derine inilmişken bu seansta yüzeysel kalma. Genellik artışı.
Espriyle geçiştirmeDuygusal yükü olan konuyu şakayla örtme. Humor as defense.
EntelektüelleştirmeDuyguyu analitik tartışmaya çevirme. "Psikolojik olarak bunun nedeni şu..." kalıbı.
Aksiyon çıktısıyan_yola_git · nazikce_geri_don · bekle · yok_say → metodoloji katmanına talimat olarak gider.
★ Servet metodolojisi — bu modülün kalbi
Servet klinik pratiğinde en sık hangi direnç tipini görüyor? Her direnç tipine yaklaşımı nedir — doğrudan ele alır mı, bekler mi, metaforla yaklaşır mı? Hangi durumda direnci hiç yüzleştirmez? Bu sorular aksiyon değerlerini belirleyecek.
İskelet yazılabilirAksiyon kuralları Servet'i bekliyor
M-5 · Bellek yöneticisi
pgvector'da saklanan geçmiş seans chunk'larından semantik olarak en ilgili pasajları bulur. "Geçen hafta bu konuda söylediğinle şu an söylediğin örtüşüyor" gözlemi buradan gelir.
Vektör aramaDanışanın son mesajı embedding'e çevrilir, pgvector'da cosine similarity ile en yakın 3–5 geçmiş chunk bulunur.
Chunk boyutuHer seans ~300 token'lık parçalara bölünür. Çok uzun chunk bağlamı gürültüler, çok kısa chunk anlam taşımaz.
FiltrelemeBenzerlik skoru 0.75 altındaki sonuçlar atılır. Bağlantısız geçmiş getirmek terapötik değil.
Bağlantı önerisiBulunan pasajlardan "X konusunu geçen seansta da konuşmuştunuz" gibi bir bağlantı cümlesi üretilir, context'e eklenir.
Çıktıilgili_gecmis[ ] · baglanti_onerisi
Şimdi kodlanabilirpgvectortext-embedding-3-small
M-6 · Müdahale zamanlaması ★
Bazen en iyi müdahale sessizliktir. "Şu an yanıt ver" veya "bekle / sadece yansıt" kararını verir. Telegram'da "bekle" kararı typing indicator + delay olarak uygulanır.
yanit_verNormal akış. Metodoloji katmanı yanıtı üretir.
bekleTyping indicator göster, N saniye bekle, sonra minimal bir yansıtma yap. "Devam et..." gibi.
sadece_yansitSoru sormadan, teknik uygulamadan sadece duyguyu yansıt. "Çok yorulmuşsun gibi görünüyor."
ozetleSeans dağınıksa tek cümlede özetle ve odaklan. "Bugün en çok ağırlık veren şey X gibi görünüyor."
Çıktıaksiyon · bekleme_suresi · gecikme_nedeni
★ Servet metodolojisi — eşik değerleri
Servet'in "ne zaman konuşur, ne zaman bekler" klinik sezgisi bu modülün eşik değerlerine dönüşecek. Hangi duygu yoğunluğunda bekler? Hangi momentum seviyesinde sadece yansıtır?
İskelet yazılabilirEşik değerleri Servet'i bekliyor
M-7 · Metodoloji seçici ★
Diğer 6 modülün çıktısına bakarak K-5 metodoloji katmanında hangi yaklaşımın aktive edileceğine karar verir.
GirdilerAşama (M-2) + duygu yoğunluğu (M-3) + direnç (M-4) + alliance skoru (K-1) + seans no.
CBT ne zaman?Otomatik düşünceler aktarılıyorsa, bilişsel çarpıtma görünüyorsa, aktif çalışma aşamasındaysa.
ACT ne zaman?Kabul güçlüğü, değer netliği ihtiyacı, deneyimsel kaçınma görünüyorsa.
Kişi merkezli?Alliance düşükse, intake aşamasındaysa, direnç güçlüyse — önce teknik değil ilişki.
Çıktıbirincil_metod · ikincil_metod · teknik · secim_nedeni
★ Servet metodolojisi — EN KRİTİK NOKTA
Bu modülün kuralları tamamen Servet'in klinik mantığını kodlamak demek. Servet integratif mi çalışıyor? Hangi durumda hangi okula geçiyor? Metodoloji haritalama oturumunun birincil çıktısı bu modüle yazılacak.
Tamamen Servet'i bekliyor

K-4 · Context builder
7 modülün çıktısı tek bir bağlam paketine dönüşür
7 modülün JSON çıktılarını alır, bunları anlamlı talimat metinlerine çevirir ve K-5 metodoloji katmanına teslim eder.
Kriz bypassM-1 risk 0.7+ ise context builder çalışmaz. Akış doğrudan kriz protokolüne gider.
Talimat üretimiHer modül çıktısı bir talimat cümlesine çevrilir. "Danışan kaygı 8/10 yoğunluğunda, espriyle geçiştirme direnci var, ACT kabul tekniği uygun."
Yasak listeBu seansta yapılmayacaklar üretilir. Direnç varsa zorlamak yasak. Alliance düşükse teknik soru yasak.
Çıktısession_state + tüm modül çıktıları + birleşik talimat metni → K-5'e gönderilir.
Şimdi kodlanabilir

K-5 · Metodoloji katmanı ★
Projenin kalbi — Servet'in terapötik dili burada yaşar
Şu an genel psikoterapi bilgisiyle dolu iskelet modüller içeriyor. Servet ile metodoloji haritalama oturumları yapıldıkça her modülün içeriği Servet'in gerçek klinik diline dönüşecek.
CBT modülüOtomatik düşünce tespiti, kanıt sorgulama, bilişsel yeniden yapılandırma. Sokratik soru şablonları burada.
ACT modülüDeğer belirleme, kabul çalışması, psikolojik esneklik teknikleri. Metafor kullanım kılavuzu burada.
Şema modülüErken dönem şema listesi, mod haritası, sınırlı ebeveynlik tekniği.
Kişi merkezliKoşulsuz kabul dili, empatik yansıtma kalıpları, danışan kendi cevabını bulana kadar bekleme talimatları.
Teknik seçiciM-7 kararını alır, o tekniğin adım adım uygulama talimatını üretir. Sokratik · davranışsal aktivasyon · duygu günlüğü · mindfulness · imge çalışması · mektup yazma.
★ Bu katmanın tamamı Servet ile doldurulacak
Her modülün içeriği Servet'in soru biçimine, dil tercihlerine, favori metaforlarına ve teknik repertuarına göre yeniden yazılacak. Haftalık metodoloji haritalama oturumlarıyla ilerleyecek.
Bu katmanın tamamı Servet'i bekliyor

K-6 · Prompt assembler
Tüm parçalar Claude API'ye gönderilecek prompt'a dönüşür
# Nihai prompt yapısı
system = f"""
Sen Servet Aşan tarafından eğitilmiş
bir psikolojik destek asistanısın.

DANIŞAN PROFİLİ:
{vaka_formulasyonu}

MEVCUT DURUM:
- Aşama: {asama} / Alliance: {alliance}/10
- Duygu: {duygu}, yoğunluk {yogunluk}/10
- Direnç: {direnc} → aksiyon: {aksiyon}
- Zamanlama: {zamanlama}

YAKLAŞIM:
{metodoloji_blogu}

TEKNİK:
{teknik_talimati}

İLGİLİ GEÇMİŞ:
{ilgili_gecmis}

YAPILMAYACAKLAR:
{yasak_liste}
"""

messages = [
  *seans_gecmisi[-10:],
  {"role": "user", "content": danisan_mesaji}
]
Şimdi kodlanabilir

K-7 · LLM — Claude API
Ham yanıt üretimi — streaming açık
Modelclaude-sonnet-4-20250514. Ana yanıt üretimi için. M-1 ve M-3 gibi küçük modüller claude-haiku-4-5 kullanır.
Max tokens600. Telegram için kısa tutulmalı — 3–4 cümle ideal. Uzun yanıt terapötik değil.
Temperature0.7. Empati için biraz varyasyon gerekli. Çok düşük mekanik hissettirir.
StreamingAçık. Typing indicator ile senkronize. Yanıt akarken kullanıcı beklemez hisseder.
Structured callsDuygu analizi ve kriz tespiti için ayrı küçük JSON-mode çağrılar. Ana yanıt serbest metin.
Şimdi kodlanabilir

K-8 · Çıktı doğrulayıcı
LLM'in ürettiği her yanıt filtreden geçer
LLM bazen talimatlara tam uymayabilir. Bu katman üretilen yanıtı kural setlerinden geçirir. Geçemeyenler K-9b yeniden üretim akışına gönderilir. Maksimum 2 deneme.
Kriz tekrar kontrolüLLM'in yanıtı tetikleyici içerik barındırıyor mu? Güvenlik ağı.
Metodoloji uyumuYanıt seçilen metodoloji ile uyumlu mu? CBT seçildiyse sokratik soru var mı?
Tavsiye filtresi"Şunu yapmalısın" tarzı doğrudan tavsiye var mı? Terapötik olmayan direktif var mı?
Ton kalibrasyonuAlliance düşükken çok teknik mi? Direnç varken çok zorlayıcı mı?
Uzunluk600 token üstüyse özetlenir. Telegram için 3–4 cümle ideal.
Karargec → K-9a. reddet → K-9b (max 2×, sonra fallback). kriz_dur → akış durur.
Şimdi kodlanabilir

K-9a · Telegram yanıtı
Doğrulanan yanıt danışana gönderilir
Typing delayM-6 "bekle" dediyse önce typing indicator gösterilir, N saniye beklenir, sonra gönderilir. İnsan hissi için kritik.
Normal gönderimbot.send_message(chat_id, yanit). Uzun yanıtlar iki mesaja bölünür.
Kriz durumuRisk 0.7+: yanıt gönderilmez. Danışana "182 ALO Psikiyatri" mesajı. Servet admin kanalına anlık alarm.
K-9b · Yeniden üretim
SüreçDoğrulayıcı hatayı tanımlar → prompt'a "önceki yanıt şu nedenle reddedildi, şimdi şunu yap" eklenir → K-7'ye gönderilir.
Maksimum deneme2. İkinci denemede de başarısızsa fallback mesajı: "Şu an seni tam anlayamadım, biraz daha anlatır mısın?"
LogHer reddet kararı loglanır. Servet'in haftalık incelemesinde sorunlu durumları gösterir.
Şimdi kodlanabilir

K-10 · Seans sonu işleyici
Bir sonraki seans bu işleyicinin çıktısından başlar
/dur komutu veya oturum timeout'u tetiklediğinde çalışır. Seans boyunca birikmiş bilgiyi işler, veritabanını günceller ve Servet'e özet paketi hazırlar.
Formülasyon güncellemeBu seansın içeriği yeni örüntü veya tetikleyici eklediyse LLM destekli özetlemeyle vaka formülasyonu güncellenir.
Alliance güncellemeSeansın katılım kalitesi, kapanış tonu, direncin seyrine göre alliance skoru revize edilir.
Ödev oluşturmaSeans içeriğine uygun, yapılabilir bir ödev önerisi. Danışana Telegram'dan gönderilir, DB'de saklanır.
Momentum kaydıHangi konu açık kaldı? Bir sonraki seans açılış cümlesi burada üretilir.
Servet özet paketiSeans özeti + kritik anlar + önerilen aksiyon. Admin kanalına gönderilir.
★ Servet metodolojisi — kapanış ve ödev formatı
Servet bir seansı nasıl kapatır? Hangi tür ödevler verir? Bir sonraki seansa köprü kurma biçimi nedir? Özet formatı Servet'in not tutma alışkanlığına uyarlanacak.
İskelet şimdi yazılabilirFormat Servet'i bekliyor

K-11 · Veri katmanı + Servet admin kanalı
Altyapı ve Servet'in izleme merkezi
PostgreSQLSeans transkriptleri, vaka formülasyonları, ödevler, alliance geçmişi. Ana kalıcı depo.
pgvectorSeans chunk embedding'leri. M-5 bellek modülünün cosine similarity araması yaptığı yer. PostgreSQL extension.
RedisAktif oturum cache'i. chat_id → session_state. TTL 4 saat. Her mesajda DB sorgusu yapmamak için.
Admin kanalıServet'in özel Telegram kanalı. Canlı transkript akışı, kriz alarmları, seans sonu özet paketleri buraya gelir.
/devral komutuServet admin kanalından /devral [chat_id] yazarsa o danışanın seansını devralar, AI konuşmayı durdurur.
Eğitim döngüsüServet admin kanalından AI'ın yanıtlarını düzeltir. Düzeltmeler K-5 metodoloji katmanına feed edilir. Zamanla AI Servet'in dilini öğrenir.
Şimdi kurulabilirPostgreSQL + pgvectorRedis